/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package delegate;

import controlacciones.ejb3.entity.TbAccion;
import controlacciones.ejb3.entity.TbArea;
import controlacciones.ejb3.entity.TbCategoriaAccion;
import controlacciones.ejb3.entity.TbClasificacionAccion;
import controlacciones.ejb3.entity.TbCliente;
import controlacciones.ejb3.entity.TbDatosCliente;
import controlacciones.ejb3.entity.TbMetas;
import controlacciones.ejb3.entity.TbParametros;
import controlacciones.ejb3.entity.TbResultado;
import controlacciones.ejb3.entity.TbTablasTipo;
import controlacciones.ejb3.entity.TbTipoAccion;
import controlacciones.ejb3.entity.TbTipoAccionClasificacionAccionArea;
import java.sql.SQLException;
import controlacciones.ejb3.facade.GestionFacadeRemote;
import controlacciones.ejb3.pojo.TableBeanBinding_Accion;
import controlacciones.ejb3.pojo.TableBeanBinding_DatosAcciones;
import controlacciones.ejb3.pojo.TableBeanBinding_DatosAccionesAprobar;
import controlacciones.ejb3.pojo.TableBeanBinding_DatosAdvanceMetas;
import controlacciones.ejb3.pojo.TableBeanBinding_DatosArchivoProgramaCorte;
import controlacciones.ejb3.pojo.TableBeanBinding_DatosClasificacionTipoAccionArea;
import controlacciones.ejb3.pojo.TableBeanBinding_DatosDetalleTipoAccion;
import controlacciones.ejb3.pojo.TableBeanBinding_DatosFactura;
import controlacciones.ejb3.pojo.TableBeanBinding_DatosLecturas;
import controlacciones.ejb3.pojo.TableBeanBinding_DatosReaperturas;
import controlacciones.ejb3.pojo.TableBeanBinding_DatosValorizacionTipoAccion;
import controlacciones.ejb3.pojo.TableBeanBinding_ErrorResultado;
import controlacciones.ejb3.pojo.TableBeanBinding_Progcort;
import controlacciones.ejb3.pojo.TableBeanBinding_RESUL;
import controlacciones.ejb3.pojo.TableBeanBinding_TbMetas;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.naming.InitialContext;
import java.util.Properties;
import javax.naming.NamingException;
import helper.Utiles_MensajesDialogo;
import java.io.File;
import java.util.Map;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JasperPrint;

/**
 *
 * @author Frank Gabriel Rodríguez Lee
 */

public class GestionDelegate {

    private GestionDelegate( String host, String port ) throws NamingException{
        _host = host;
        _port = port;
        
        
    }

    //Patron Singleton
    public static GestionDelegate getInstance(){
        if (gestionDelegate == null) {
            //String host = "127.0.0.1";
//            String host = "192.168.0.1";
            String host = "192.168.23.40";
            String port = "3700";
            try {                
                gestionDelegate = new GestionDelegate(host, port);
            } catch (NamingException ex) {
                Logger.getLogger(GestionDelegate.class.getName()).log(Level.SEVERE, null, ex);
                System.out.println( "No se puedo crear el objeto" );
            }
        }
        return gestionDelegate;
    }

    public GestionFacadeRemote callGestionFacade(){
        GestionFacadeRemote sless = null;
        try {            
            sless = (controlacciones.ejb3.facade.GestionFacadeRemote) _ic.lookup("controlacciones.ejb3.facade.GestionFacadeRemote");
        } catch (NamingException ex) {
            Logger.getLogger(GestionDelegate.class.getName()).log(Level.SEVERE, null, ex);
            System.out.println( "Error en la llamada del servicio" );
        }
        return sless;
    }

    /*********************************************/
    
    public void setHost( String host ){
        _host = host;
    }

    public void setPort( String port ){
        _port = port;
    }

    public void inicializaContexto() throws NamingException{
        Properties properties = new Properties();
        properties.setProperty("org.omg.CORBA.ORBInitialHost", _host);
        properties.setProperty("org.omg.CORBA.ORBInitialPort", _port);
        _ic = new InitialContext( properties );        
    }

    public void getServicio(){
        try {
            this.inicializaContexto();
        } catch (NamingException ex) {
            Logger.getLogger(GestionDelegate.class.getName()).log(Level.SEVERE, null, ex);
            System.out.println( "Error al inicializar servicio" );
        }
        gestionFacadeRemote = gestionDelegate.callGestionFacade();
    }

    /******************************************************/
    /******************REGISTRO BUSINESS***************************/
    /**************************************************/

    public void registraAccionMasiva( List<TbCliente> clientes, TbTipoAccionClasificacionAccionArea tipoAccionClasificacionAccionArea, String observacion , String log_user ) throws Exception{
        try {
            gestionFacadeRemote.registraAccionMasiva(clientes, tipoAccionClasificacionAccionArea, observacion, log_user);
            Utiles_MensajesDialogo.mensajeInfo("Operación ejecutada exitosamente");
        } catch (Exception ex) {
            Utiles_MensajesDialogo.mensajeError("Hubo un error en la transacción");
            throw ex;
        }
    }

    public void registraAccionIndividual( TbCliente cliente, TbTipoAccionClasificacionAccionArea tipoAccionClasificacionAccionArea, String observacion, String log_user  ) throws Exception{
        try {
            gestionFacadeRemote.registraAccionIndividual(cliente, tipoAccionClasificacionAccionArea, observacion, log_user);
            Utiles_MensajesDialogo.mensajeInfo("Operación ejecutada exitosamente");
        } catch (Exception ex) {
            Utiles_MensajesDialogo.mensajeError("Hubo un error en la transacción");
            throw ex;
        }
    }

    public void registraOcurrencia( TbCliente cliente, TbTipoAccionClasificacionAccionArea tipoAccionClasificacionAccionArea, String observacion, String log_user  )throws SQLException, Exception{
        try {
            gestionFacadeRemote.registraOcurrencia(cliente, tipoAccionClasificacionAccionArea, observacion, log_user);
            Utiles_MensajesDialogo.mensajeInfo("Operación ejecutada exitosamente");
        } catch (Exception ex) {
            Utiles_MensajesDialogo.mensajeError("Hubo un error en la transacción");
            throw ex;
        }
    }
    
    public void registraAccionCorteReapertura( List<TbCliente> clientes, TbTipoAccionClasificacionAccionArea tipoAccionClasificacionAccionArea, String observacion, String log_user  ) throws Exception{
        try {
            gestionFacadeRemote.registraAccionCorteReapertura(clientes, tipoAccionClasificacionAccionArea, observacion, log_user);
            Utiles_MensajesDialogo.mensajeInfo("Operación ejecutada exitosamente");
        } catch (Exception ex) {
            Utiles_MensajesDialogo.mensajeError("Hubo un error en la transacción");
            throw ex;
        }
    }

    public void actualizarAccion( TbAccion tbAccion ) throws Exception{
        try {
            gestionFacadeRemote.actualizarAccion(tbAccion);
        } catch (Exception ex) {
            throw ex;
        }
    }

    public void registrarResultadoAcciones( List<TbResultado> resultados ) throws Exception{
        try {
            gestionFacadeRemote.registrarResultadoAcciones(resultados);
            Utiles_MensajesDialogo.mensajeInfo("Operación ejecutada exitosamente");
        } catch (Exception ex) {
            Utiles_MensajesDialogo.mensajeError("Hubo error en la transacción");
            Logger.getLogger(GestionDelegate.class.getName()).log(Level.SEVERE, null, ex);
            throw ex;
        }
    }

    public String procesarResultadoAcciones( String cod_area, String log_user ) throws Exception{
        try {
            return gestionFacadeRemote.procesarResultadoAcciones(cod_area, log_user);
        } catch (Exception ex) {
            Utiles_MensajesDialogo.mensajeError("Hubo error en la transacción");
            Logger.getLogger(GestionDelegate.class.getName()).log(Level.SEVERE, null, ex);
            throw ex;
        }

    }

    public void procesarCargaTrabajoFecha( String fecha, TbArea area ) throws SQLException{
        try {
            gestionFacadeRemote.procesarCargaTrabajoFecha(fecha, area);
            Utiles_MensajesDialogo.mensajeInfo("Se generó la carga de trabajo exitosamente");
        } catch (SQLException ex) {
            Utiles_MensajesDialogo.mensajeError("Hubo error en la transacción");
            Logger.getLogger(GestionDelegate.class.getName()).log(Level.SEVERE, null, ex);
            throw ex;
        }
    }

    public String  procesarReaperturas( String cod_area, String fecProceso, String log_user, String obser  ) throws SQLException{
        try {
            return gestionFacadeRemote.procesarReaperturas(cod_area, fecProceso, log_user, obser);
        } catch (SQLException ex) {
            //Utiles_MensajesDialogo.mensajeError("Hubo error en la transacción");
            Logger.getLogger(GestionDelegate.class.getName()).log(Level.SEVERE, null, ex);
            throw ex;
        }
    }

    public String  procesarFacturas( String cod_area, String fecProceso, String log_user, String obser  ) throws SQLException{
        try {
            return gestionFacadeRemote.procesarFacturas(cod_area, fecProceso, log_user, obser);
        } catch (SQLException ex) {
            //Utiles_MensajesDialogo.mensajeError("Hubo error en la transacción");
            Logger.getLogger(GestionDelegate.class.getName()).log(Level.SEVERE, null, ex);
            throw ex;
        }
    }

    public String  procesarLecturas( String cod_area, String fecProceso, String log_user, String obser  ) throws SQLException{
        try {
            return gestionFacadeRemote.procesarLecturas(cod_area, fecProceso, log_user, obser);
        } catch (SQLException ex) {
            //Utiles_MensajesDialogo.mensajeError("Hubo error en la transacción");
            Logger.getLogger(GestionDelegate.class.getName()).log(Level.SEVERE, null, ex);
            throw ex;
        }
    }

    public String copiaArchivoResultados( File origen, String cod_area){
        return gestionFacadeRemote.copiaArchivoResultados(origen, cod_area);
    }

    public String copiarArchivosFacturas()throws Exception{
        try {
            return gestionFacadeRemote.copiarArchivosFacturas();
        } catch (SQLException ex) {
            //Utiles_MensajesDialogo.mensajeError("Hubo error en la transacción");
            Logger.getLogger(GestionDelegate.class.getName()).log(Level.SEVERE, null, ex);
            throw ex;
        }
    }

    public String  ejecutarIntegracionResultados( String codarea, String nomjob ) throws SQLException{
        try {
            return gestionFacadeRemote.ejecutarIntegracionResultados(codarea, nomjob);
        } catch (SQLException ex) {
            //Utiles_MensajesDialogo.mensajeError("Hubo error en la transacción");
            Logger.getLogger(GestionDelegate.class.getName()).log(Level.SEVERE, null, ex);
            throw ex;
        }
    }

    public String copiarArchivosLecturas()throws Exception{
        try {
            return gestionFacadeRemote.copiarArchivosLecturas();
        } catch (SQLException ex) {
            //Utiles_MensajesDialogo.mensajeError("Hubo error en la transacción");
            Logger.getLogger(GestionDelegate.class.getName()).log(Level.SEVERE, null, ex);
            throw ex;
        }
    }

    public String  ejecutarIntegracionFacturas( ) throws SQLException{
         try {
            return gestionFacadeRemote.ejecutarIntegracionFacturas( );
        } catch (SQLException ex) {
            //Utiles_MensajesDialogo.mensajeError("Hubo error en la transacción");
            Logger.getLogger(GestionDelegate.class.getName()).log(Level.SEVERE, null, ex);
            throw ex;
        }
    }

    public String  ejecutarIntegracionLecturas( ) throws SQLException{
         try {
            return gestionFacadeRemote.ejecutarIntegracionLecturas();
        } catch (SQLException ex) {
            //Utiles_MensajesDialogo.mensajeError("Hubo error en la transacción");
            Logger.getLogger(GestionDelegate.class.getName()).log(Level.SEVERE, null, ex);
            throw ex;
        }
    }

    public String  ejecutaCopiaFacturas( String fecProceso, String log_user ) throws SQLException{
         try {
            return gestionFacadeRemote.ejecutaCopiaFacturas(fecProceso, log_user);
        } catch (SQLException ex) {
            //Utiles_MensajesDialogo.mensajeError("Hubo error en la transacción");
            Logger.getLogger(GestionDelegate.class.getName()).log(Level.SEVERE, null, ex);
            throw ex;
        }
    }

    public String  ejecutarIntegracionReaperturas( ) throws SQLException{
         try {
            return gestionFacadeRemote.ejecutarIntegracionReaperturas( );
        } catch (SQLException ex) {
            //Utiles_MensajesDialogo.mensajeError("Hubo error en la transacción");
            Logger.getLogger(GestionDelegate.class.getName()).log(Level.SEVERE, null, ex);
            throw ex;
        }
    }

    public String  copiarReaperturas( String fecProceso, String log_user) throws SQLException{
        try {
            return gestionFacadeRemote.copiarReaperturas(fecProceso, log_user);
        } catch (SQLException ex) {
            //Utiles_MensajesDialogo.mensajeError("Hubo error en la transacción");
            Logger.getLogger(GestionDelegate.class.getName()).log(Level.SEVERE, null, ex);
            throw ex;
        }
    }

    public String  procesarCargaTrabajoFecha_DBF( String fecha, TbArea area ) throws SQLException{
        try {
            return gestionFacadeRemote.procesarCargaTrabajoFecha_DBF(fecha, area);
        } catch (SQLException ex) {
            Utiles_MensajesDialogo.mensajeError("Hubo error en la transacción");
            Logger.getLogger(GestionDelegate.class.getName()).log(Level.SEVERE, null, ex);
            throw ex;
        }
    }

    //Mantenimiento Tipo

    public void actualizarParametros(TbParametros tbParametros) throws Exception{
         try {
             gestionFacadeRemote.actualizarParametros(tbParametros);
         } catch (Exception ex) {
             Utiles_MensajesDialogo.mensajeError("Hubo error en la transacción");
             Logger.getLogger(GestionDelegate.class.getName()).log(Level.SEVERE, null, ex);
             throw ex;
         }
    }

    public List<TbArea> getListaArea() throws Exception{

        try {
            return gestionFacadeRemote.getListaArea();
        } catch (Exception ex) {
            Utiles_MensajesDialogo.mensajeError("Error al obtener datos de Área");
            Logger.getLogger(GestionDelegate.class.getName()).log(Level.SEVERE, null, ex);
            throw ex;
        }
    }

    public List<TbTablasTipo> getListaTipoObservacion() throws Exception{
        try {
            return gestionFacadeRemote.getListaTipoObservacion();
        } catch (Exception ex) {
            Utiles_MensajesDialogo.mensajeError("Error al obtener datos de tablas tipo");
            Logger.getLogger(GestionDelegate.class.getName()).log(Level.SEVERE, null, ex);
            throw ex;
        }
    }

    public List<TbTablasTipo> getListaTipoEjecucion() throws Exception{
        try {
            return gestionFacadeRemote.getListaTipoEjecucion();
        } catch (Exception ex) {
            Utiles_MensajesDialogo.mensajeError("Error al obtener datos de tablas tipo");
            Logger.getLogger(GestionDelegate.class.getName()).log(Level.SEVERE, null, ex);
            throw ex;
        }
    }

    public List<TbTablasTipo> getListaCategoriaAccion() throws Exception{
        try {
            return gestionFacadeRemote.getListaCategoriaAccion();
        } catch (Exception ex) {
            Utiles_MensajesDialogo.mensajeError("Error al obtener datos de tablas tipo");
            Logger.getLogger(GestionDelegate.class.getName()).log(Level.SEVERE, null, ex);
            throw ex;
        }
    }

    public List<TbTablasTipo> getListaClasificacionAccion() throws Exception{
        try {
            return gestionFacadeRemote.getListaClasificacionAccion();
        } catch (Exception ex) {
            Utiles_MensajesDialogo.mensajeError("Error al obtener datos de tablas tipo");
            Logger.getLogger(GestionDelegate.class.getName()).log(Level.SEVERE, null, ex);
            throw ex;
        }
    }

    //Paginacion

    public List getListaDatosArchivoResultado( )throws Exception {
        try{
            return gestionFacadeRemote.getListaDatosArchivoResultado();
        }catch( Exception e ){
            throw e;
        }
    }

    public List<TableBeanBinding_Progcort> getListaCorte(  int pagActual, int pagTamanno ) {
        return gestionFacadeRemote.getListaCorte(pagActual, pagTamanno);
    }

    public List<TableBeanBinding_RESUL> getListaResultados( String codarea,int pagActual, int pagTamanno ) {
        return gestionFacadeRemote.getListaResultados(codarea, pagActual, pagTamanno);
    }

    public List<TableBeanBinding_DatosLecturas> getListaLecturas( String fecha, int pagActual, int pagTamanno ) {
        return gestionFacadeRemote.getListaLecturas(fecha, pagActual, pagTamanno);
    }

    public List<TableBeanBinding_DatosFactura> getListaFacturas( String fecha, String log_user, int pagActual, int pagTamanno ) {
        return gestionFacadeRemote.getListaFacturas(fecha, log_user, pagActual, pagTamanno);
    }


    public List<TableBeanBinding_DatosFactura> getListaFacturas( String fecha, String log_user ) {
        return gestionFacadeRemote.getListaFacturas(fecha, log_user);
    }

    public List<TableBeanBinding_DatosFactura> getListaFacturasTOP( String fecha, String log_user ) {
        return gestionFacadeRemote.getListaFacturasTOP(fecha, log_user);
    }
    
    public void Totfac_iniciaConfiguracion(int pagTamanno){
        gestionFacadeRemote.Totfac_iniciaConfiguracion(pagTamanno);
    }

    public void Totfac_siguiente() {
        gestionFacadeRemote.Totfac_siguiente();
    }

    public void Totfac_anterior() {
        gestionFacadeRemote.Totfac_anterior();
    }

    public void Totfac_primero() {
         gestionFacadeRemote.Totfac_primero();
     }

    public void Totfac_ultimo(){
       gestionFacadeRemote.Totfac_ultimo();
     }
    //Consulta

    public int getNumRegistrosCortes( ) throws Exception{
        try {
            return gestionFacadeRemote.getNumRegistrosCortes();
        } catch (Exception e) {
            throw e;
        }
    }

    public int getNumRegistrosAcciones( TbArea area, String fecha) throws Exception{
        try {
             return gestionFacadeRemote.getNumRegistrosAcciones(area, fecha);
         } catch (Exception ex) {
            System.out.println("Error: buscarParametro:" + ex.getMessage());
            throw ex;
         }
    }

    public int getNumRegistrosResultados( String codarea) throws Exception{
          try {
             return gestionFacadeRemote.getNumRegistrosResultados(codarea);
         } catch (Exception ex) {
            System.out.println("Error: getNumRegistrosLecturas:" + ex.getMessage());
            throw ex;
         }
    }

    public int getNumRegistrosLecturas( String fecha) throws Exception{
         try {
             return gestionFacadeRemote.getNumRegistrosLecturas(fecha);
         } catch (Exception ex) {
            System.out.println("Error: getNumRegistrosLecturas:" + ex.getMessage());
            throw ex;
         }
    }

    public int getNumRegistrosFacturas(String fecha) throws Exception{
        try {
             return gestionFacadeRemote.getNumRegistrosFacturas(fecha);
         } catch (Exception ex) {
            System.out.println("Error: getNumRegistrosFacturas:" + ex.getMessage());
            throw ex;
         }
    }

    public TbParametros buscarParametro(Object id) throws Exception {
         try {
             return gestionFacadeRemote.buscarParametro(id);
         } catch (Exception ex) {
            System.out.println("Error: buscarParametro:" + ex.getMessage());
            throw ex;
         }
     }

    public boolean seEstaEjecutandoJob(String codarea ){
        try {
             return gestionFacadeRemote.seEstaEjecutandoJob( codarea);
         } catch (Exception ex) {
            System.out.println("Error seEstaEjecutandoJob");
            Logger.getLogger(GestionDelegate.class.getName()).log(Level.SEVERE, null, ex);
            return true;
         }
    }

    public boolean seEstaEjecutandoJob2(String codarea ){
        try {
             return gestionFacadeRemote.seEstaEjecutandoJob2( codarea);
         } catch (Exception ex) {
            System.out.println("Error seEstaEjecutandoJob2");
            Logger.getLogger(GestionDelegate.class.getName()).log(Level.SEVERE, null, ex);
            return true;
         }
    }

    public boolean  verificarJobEjecutando( String nom_job ) throws SQLException{
        try {
             return gestionFacadeRemote.verificarJobEjecutando( nom_job);
         } catch (Exception ex) {
            System.out.println("Error verificarJobEjecutando");
            Logger.getLogger(GestionDelegate.class.getName()).log(Level.SEVERE, null, ex);
            return true;
         }
    }

    public boolean  verificarArchivoProcesadoFacturas( String fechaProceso ) throws SQLException{
        try {
             return gestionFacadeRemote.verificarArchivoProcesadoFacturas(fechaProceso);
         } catch (Exception ex) {
            System.out.println("Error verificarArchivoProcesadoFacturas(");
            Logger.getLogger(GestionDelegate.class.getName()).log(Level.SEVERE, null, ex);
            return true;
         }
    }

     public boolean  verificarArchivoProcesadoLecturas( String fechaProceso ) throws SQLException{
        try {
             return gestionFacadeRemote.verificarArchivoProcesadoLecturas(fechaProceso);
         } catch (Exception ex) {
            System.out.println("Error verificarArchivoProcesadoLecturas(");
            Logger.getLogger(GestionDelegate.class.getName()).log(Level.SEVERE, null, ex);
            return true;
         }
    }

     public List<TbTipoAccionClasificacionAccionArea> getTipoAccionNotificacionesByArea( String codArea ) throws Exception{
         try {
             return gestionFacadeRemote.getTipoAccionNotificacionesByArea(codArea);
         } catch (Exception ex) {
            Utiles_MensajesDialogo.mensajeError("Error al obtener datos de Tipo de accion Notificaciones");
            Logger.getLogger(GestionDelegate.class.getName()).log(Level.SEVERE, null, ex);
            throw ex;
         }
     }

     public List<TbTipoAccionClasificacionAccionArea> getTipoAccionByArea( String codArea ) throws Exception{
         try {
             return gestionFacadeRemote.getTipoAccionByArea(codArea);             
         } catch (Exception ex) {
            Utiles_MensajesDialogo.mensajeError("Error al obtener datos de Tipo de accion");
            Logger.getLogger(GestionDelegate.class.getName()).log(Level.SEVERE, null, ex);
            throw ex;
         }
    }   

//    public List<TbTipoAccionClasificacionAccionAreaVerCodigo> getTipoAccionByAreaVerCodigo( String codArea ) throws Exception{
//        try {
//            return gestionFacadeRemote.getTipoAccionByAreaVerCodigo(codArea);
//        } catch (Exception e) {
//            throw e;
//        }
//    }

    public List<TbTipoAccionClasificacionAccionArea> getTipoAccionByAreaIndividuales( String codArea, int codTipoAccion ) throws Exception{
        try {
             return gestionFacadeRemote.getTipoAccionByAreaIndividuales(codArea, codTipoAccion);
         } catch (Exception ex) {
            Utiles_MensajesDialogo.mensajeError("Error al obtener datos de getTipoAccionByAreaIndividuales");
            Logger.getLogger(GestionDelegate.class.getName()).log(Level.SEVERE, null, ex);
            throw ex;
         }
    }

    public List<TbTipoAccionClasificacionAccionArea> getTipoAccionByAreaIndividuales( String codArea ) throws Exception{
        try {
             return gestionFacadeRemote.getTipoAccionByAreaIndividuales(codArea);
         } catch (Exception ex) {
            Utiles_MensajesDialogo.mensajeError("Error al obtener datos de getTipoAccionByAreaIndividuales");
            Logger.getLogger(GestionDelegate.class.getName()).log(Level.SEVERE, null, ex);
            throw ex;
         }
    }

    public List<TbTipoAccionClasificacionAccionArea> getTipoAccionByArea( String codArea, int codTipoAccion ) throws Exception{
        try {
             return gestionFacadeRemote.getTipoAccionByArea(codArea, codTipoAccion);
         } catch (Exception ex) {
            Utiles_MensajesDialogo.mensajeError("Error al obtener datos de Tipo de accion2");
            Logger.getLogger(GestionDelegate.class.getName()).log(Level.SEVERE, null, ex);
            throw ex;
         }
    }

    public TbDatosCliente getDatosCliente( String numInscrip ) throws Exception{
        try {
            return gestionFacadeRemote.getDatosCliente(numInscrip);
        } catch (Exception ex) {
            Utiles_MensajesDialogo.mensajeError("Error al obtener datos del cliente");
            Logger.getLogger(GestionDelegate.class.getName()).log(Level.SEVERE, null, ex);
            throw ex;
        }
    }

    public List<TbAccion> getAccionesForCargaTrabajo( String fecha ) throws Exception{

        try {
            return gestionFacadeRemote.getAccionesForCargaTrabajo(fecha);
        } catch (Exception ex) {
            Utiles_MensajesDialogo.mensajeError("Error al obtener datos del cliente");
            Logger.getLogger(GestionDelegate.class.getName()).log(Level.SEVERE, null, ex);
            throw ex;
        }
    }

    public List<TbDatosCliente> getDatosClientes( List dat ) throws Exception{
        try {
            return gestionFacadeRemote.getDatosClientes(dat);
        } catch (Exception ex) {
            Utiles_MensajesDialogo.mensajeError("Error al obtener datos del cliente");
            Logger.getLogger(GestionDelegate.class.getName()).log(Level.SEVERE, null, ex);
            throw ex;
        }
    }

    //BeanBinding

     public List<TableBeanBinding_ErrorResultado> getListaDatosErrorResultado( String log_user ) throws Exception {
         try {
            return gestionFacadeRemote.getListaDatosErrorResultado(log_user);
        } catch (Exception ex) {
            throw ex;
        }
    }

    public List<TableBeanBinding_DatosAcciones> getAccion( String codAccion ) throws Exception {
        try {
            return gestionFacadeRemote.getAccion(codAccion);
        } catch (Exception ex) {
            throw ex;
        }
    }

     public List<TableBeanBinding_DatosAdvanceMetas> getListaDatosAvanceMetas(  String fechaInicio, String fechaFin )throws SQLException, Exception
    {
         try {
            return gestionFacadeRemote.getListaDatosAvanceMetas(fechaInicio, fechaFin);
        } catch (Exception ex) {
            throw ex;
        }
    }

    public List<TableBeanBinding_DatosAcciones> getListaDatosAccionesByMes( TbTipoAccionClasificacionAccionArea tipoAccion, String ano, String mes ) throws Exception  {
        try {
            return gestionFacadeRemote.getListaDatosAccionesByMes(tipoAccion, ano, mes);
        } catch (Exception ex) {
            Utiles_MensajesDialogo.mensajeError("Error al obtener datos de la consulta");
            Logger.getLogger(GestionDelegate.class.getName()).log(Level.SEVERE, null, ex);
            throw ex;
        }
    }

    public List<TableBeanBinding_DatosAcciones> getListaDatosAccionesByFecha( TbTipoAccionClasificacionAccionArea tipoAccion, String fecha ) throws Exception{
        try {
            return gestionFacadeRemote.getListaDatosAccionesByFecha(tipoAccion, fecha);
        } catch (Exception ex) {
            Utiles_MensajesDialogo.mensajeError("Error al obtener datos de la consulta");
            Logger.getLogger(GestionDelegate.class.getName()).log(Level.SEVERE, null, ex);
            throw ex;
        }
    }

    public List<TableBeanBinding_Accion> getListaDatosAcciones( TbArea area, String fecha, String codTipoAccion, String numInscri, int pagActual, int pagTamanno ) throws Exception {
        try {
            return gestionFacadeRemote.getListaDatosAcciones(area, fecha, codTipoAccion, numInscri, pagActual, pagTamanno);
        } catch (Exception ex) {
            Utiles_MensajesDialogo.mensajeError("Error al obtener datos de la consulta");
            Logger.getLogger(GestionDelegate.class.getName()).log(Level.SEVERE, null, ex);
            throw ex;
        }
    }

    public List<TableBeanBinding_DatosAcciones> getListaDatosAccionesByFecha( TbArea area, String fecha, int pagActual, int pagTamanno ) throws Exception {
        try {
            return gestionFacadeRemote.getListaDatosAccionesByFecha(area, fecha, pagActual, pagTamanno);
        } catch (Exception ex) {
            Utiles_MensajesDialogo.mensajeError("Error al obtener datos de la consulta");
            Logger.getLogger(GestionDelegate.class.getName()).log(Level.SEVERE, null, ex);
            throw ex;
        }
    }

    public List<TableBeanBinding_DatosAcciones> getListaDatosAccionesByFecha( TbArea area, String fechaInicio, String fechaFin ) throws Exception {
        try {
            return gestionFacadeRemote.getListaDatosAccionesByFecha(area, fechaInicio, fechaFin);
        } catch (Exception ex) {
            Utiles_MensajesDialogo.mensajeError("Error al obtener datos de la consulta");
            Logger.getLogger(GestionDelegate.class.getName()).log(Level.SEVERE, null, ex);
            throw ex;
        }
    }

    public List<TbCategoriaAccion> getListaTbCategoriaAccion(  ) throws Exception {
        try {
            return gestionFacadeRemote.getListaTbCategoriaAccion();
        } catch (Exception ex) {
            Utiles_MensajesDialogo.mensajeError("Error getListaTbCategoriaAccion : " + ex.getMessage());
            Logger.getLogger(GestionDelegate.class.getName()).log(Level.SEVERE, null, ex);
            throw ex;
        }
    }

    public List<TbTipoAccion> getListaTbTipoAccion() throws Exception{

          try {
            return gestionFacadeRemote.getListaTbTipoAccion();
        } catch (Exception ex) {
            Utiles_MensajesDialogo.mensajeError("Error getListaTbTipoAccion : " + ex.getMessage());
            Logger.getLogger(GestionDelegate.class.getName()).log(Level.SEVERE, null, ex);
            throw ex;
        }
    }

    public List<TbClasificacionAccion> getListaTbClasificacionAccion() throws Exception{
         try {
            return gestionFacadeRemote.getListaTbClasificacionAccion();
        } catch (Exception ex) {
            Utiles_MensajesDialogo.mensajeError("Error getListaTbClasificacionAccion : " + ex.getMessage());
            Logger.getLogger(GestionDelegate.class.getName()).log(Level.SEVERE, null, ex);
            throw ex;
        }
    }

    public List<TableBeanBinding_DatosDetalleTipoAccion> getListaDatosTipoAccion( TbTipoAccion tbTipoAccion  ) throws Exception {
          try {
            return gestionFacadeRemote.getListaDatosTipoAccion( tbTipoAccion );
        } catch (Exception ex) {
            Utiles_MensajesDialogo.mensajeError("Error getListaDatosTipoAccion : " + ex.getMessage());
            Logger.getLogger(GestionDelegate.class.getName()).log(Level.SEVERE, null, ex);
            throw ex;
        }
     }

    public List<TableBeanBinding_DatosClasificacionTipoAccionArea> getListaClasificacionTipoAccionArea( TbTipoAccion tbTipoAccion  ) throws Exception {
        try {
            return gestionFacadeRemote.getListaClasificacionTipoAccionArea( tbTipoAccion );
        } catch (Exception ex) {
            Utiles_MensajesDialogo.mensajeError("Error TableBeanBinding_DatosClasificacionTipoAccionArea : " + ex.getMessage());
            Logger.getLogger(GestionDelegate.class.getName()).log(Level.SEVERE, null, ex);
            throw ex;
        }         
    }

    public List<TableBeanBinding_DatosAccionesAprobar> getListaAccionesAprobar(  String fechaInicio, String fechaFin  ) throws Exception {
        try {
            return gestionFacadeRemote.getListaAccionesAprobar(  fechaInicio,  fechaFin  );
        } catch (Exception ex) {
            System.out.println("Error getListaAccionesAprobar : " + ex.getMessage());
            Logger.getLogger(GestionDelegate.class.getName()).log(Level.SEVERE, null, ex);
            throw ex;
        }      
    }

     public List<TableBeanBinding_DatosReaperturas> getListaReaperturas( String fecha, String log_user ) throws Exception {
        try {
            return gestionFacadeRemote.getListaReaperturas(  fecha,  log_user );
        } catch (Exception ex) {
            System.out.println("Error getListaReaperturas : " + ex.getMessage());
            Logger.getLogger(GestionDelegate.class.getName()).log(Level.SEVERE, null, ex);
            throw ex;
        }
    }

    public List<TableBeanBinding_TbMetas> getListaMetas( TbTipoAccion tbTipoAccion ) throws Exception {
        try {
            return gestionFacadeRemote.getListaMetas(  tbTipoAccion  );
        } catch (Exception ex) {
            System.out.println("Error getListaMetas : " + ex.getMessage());
            Logger.getLogger(GestionDelegate.class.getName()).log(Level.SEVERE, null, ex);
            throw ex;
        }
    }

    public List<TableBeanBinding_DatosValorizacionTipoAccion> getListaValorizacionTipoAccion( String ano, String mes ) throws Exception {

        try {
            return gestionFacadeRemote.getListaValorizacionTipoAccion(ano, mes);
        } catch (Exception ex) {
            System.out.println("Error getListaValorizacionTipoAccion : " + ex.getMessage());
            Logger.getLogger(GestionDelegate.class.getName()).log(Level.SEVERE, null, ex);
            throw ex;
        }
    }

    //Valorizar
     public String sp_valorizarAcciones( String ano, String mes  )throws SQLException, Exception{
         try {
            return gestionFacadeRemote.sp_valorizarAcciones(ano, mes);
        } catch (Exception ex) {
            Utiles_MensajesDialogo.mensajeError("Error sp_valorizarAcciones : " + ex.getMessage());
            Logger.getLogger(GestionDelegate.class.getName()).log(Level.SEVERE, null, ex);
            throw ex;
        }
     }
    //Mantenimiento de Tablas
    public void insertarCategoriaAccion( TbCategoriaAccion tbCategoriaAccion ) throws Exception{
          try {
            gestionFacadeRemote.insertarCategoriaAccion(tbCategoriaAccion);
        } catch (Exception ex) {
            Utiles_MensajesDialogo.mensajeError("Error insertarCategoriaAccion : " + ex.getMessage());
            Logger.getLogger(GestionDelegate.class.getName()).log(Level.SEVERE, null, ex);
            throw ex;
        }

    }

    public void actualizarCategoriaAccion( TbCategoriaAccion tbCategoriaAccion ) throws Exception{
        try {
            gestionFacadeRemote.actualizarCategoriaAccion(tbCategoriaAccion);
        } catch (Exception ex) {
            Utiles_MensajesDialogo.mensajeError("Error actualizarCategoriaAccion : " + ex.getMessage());
            Logger.getLogger(GestionDelegate.class.getName()).log(Level.SEVERE, null, ex);
            throw ex;
        }
    }

    public void eliminarCategoriaAccion( TbCategoriaAccion tbCategoriaAccion ) throws Exception{
        try {
            gestionFacadeRemote.eliminarCategoriaAccion(tbCategoriaAccion);
        } catch (Exception ex) {
            Utiles_MensajesDialogo.mensajeError("Error eliminarCategoriaAccion : " + ex.getMessage());
            Logger.getLogger(GestionDelegate.class.getName()).log(Level.SEVERE, null, ex);
            throw ex;
        }
    }

    public void insertarTipoAccion( TbTipoAccion tbTipoAccion ) throws Exception{
        try {
            gestionFacadeRemote.insertarTipoAccion( tbTipoAccion );
        } catch (Exception ex) {
            Utiles_MensajesDialogo.mensajeError("Error insertarTipoAccion : " + ex.getMessage());
            Logger.getLogger(GestionDelegate.class.getName()).log(Level.SEVERE, null, ex);
            throw ex;
        }
    }

    public void actualizarTipoAccion( TbTipoAccion tbTipoAccion ) throws Exception{
        try {
            gestionFacadeRemote.actualizarTipoAccion( tbTipoAccion );
        } catch (Exception ex) {
            Utiles_MensajesDialogo.mensajeError("Error actualizarTipoAccion : " + ex.getMessage());
            Logger.getLogger(GestionDelegate.class.getName()).log(Level.SEVERE, null, ex);
            throw ex;
        }
    }

    public void eliminarTipoAccion( TbTipoAccion tbTipoAccion ) throws Exception{
        try {
            gestionFacadeRemote.eliminarTipoAccion( tbTipoAccion );
        } catch (Exception ex) {
            Utiles_MensajesDialogo.mensajeError("Error eliminarTipoAccion : " + ex.getMessage());
            Logger.getLogger(GestionDelegate.class.getName()).log(Level.SEVERE, null, ex);
            throw ex;
        } 
    }

    //TbMetas
    public void insertarMeta( TbMetas  tbMetas ) throws Exception{
        try {
            gestionFacadeRemote.insertarMeta( tbMetas );
        } catch (Exception ex) {
            Utiles_MensajesDialogo.mensajeError("Error insertarMeta : " + ex.getMessage());
            Logger.getLogger(GestionDelegate.class.getName()).log(Level.SEVERE, null, ex);
            throw ex;
        }
    }

    public void actualizarMeta( TbMetas  tbMetas ) throws Exception{
        try {
            gestionFacadeRemote.actualizarMeta( tbMetas );
        } catch (Exception ex) {
            Utiles_MensajesDialogo.mensajeError("Error actualizarMeta : " + ex.getMessage());
            Logger.getLogger(GestionDelegate.class.getName()).log(Level.SEVERE, null, ex);
            throw ex;
        }
    }

    public void eliminarMeta( TbMetas  tbMetas ) throws Exception{
        try {
            gestionFacadeRemote.eliminarMeta( tbMetas );
        } catch (Exception ex) {
            Utiles_MensajesDialogo.mensajeError("Error eliminarMeta : " + ex.getMessage());
            Logger.getLogger(GestionDelegate.class.getName()).log(Level.SEVERE, null, ex);
            throw ex;
        }
    }

    //TbTipoAccionClasificacionAccionArea
    public void insertarTipoAccionClasificacionAccionArea( TbTipoAccionClasificacionAccionArea  tbTipoAccionClasificacionAccionArea ) throws Exception{
        try {
            gestionFacadeRemote.insertarTipoAccionClasificacionAccionArea( tbTipoAccionClasificacionAccionArea );
        } catch (Exception ex) {
            Utiles_MensajesDialogo.mensajeError("Error insertarTipoAccionClasificacionAccionArea : " + ex.getMessage());
            Logger.getLogger(GestionDelegate.class.getName()).log(Level.SEVERE, null, ex);
            throw ex;
        }
    }

    public void actualizarTipoAccionClasificacionAccionArea( TbTipoAccionClasificacionAccionArea  tbTipoAccionClasificacionAccionArea ) throws Exception{
        try {
            gestionFacadeRemote.actualizarTipoAccionClasificacionAccionArea( tbTipoAccionClasificacionAccionArea );
        } catch (Exception ex) {
            Utiles_MensajesDialogo.mensajeError("Error actualizarTipoAccionClasificacionAccionArea : " + ex.getMessage());
            Logger.getLogger(GestionDelegate.class.getName()).log(Level.SEVERE, null, ex);
            throw ex;
        }
    }

    public void eliminarTipoAccionClasificacionAccionArea( TbTipoAccionClasificacionAccionArea  tbTipoAccionClasificacionAccionArea ) throws Exception{
         try {
            gestionFacadeRemote.eliminarTipoAccionClasificacionAccionArea( tbTipoAccionClasificacionAccionArea );
        } catch (Exception ex) {
            Utiles_MensajesDialogo.mensajeError("Error eliminarTipoAccionClasificacionAccionArea : " + ex.getMessage());
            Logger.getLogger(GestionDelegate.class.getName()).log(Level.SEVERE, null, ex);
            throw ex;
        }
    }

    //Busquedas
    public TbTipoAccion buscarTipoAccion(Object id) throws Exception {
        try {
            return gestionFacadeRemote.buscarTipoAccion( id );
        } catch (Exception ex) {
            Utiles_MensajesDialogo.mensajeError("Error buscarTipoAccion : " + ex.getMessage());
            Logger.getLogger(GestionDelegate.class.getName()).log(Level.SEVERE, null, ex);
            throw ex;
        }
    }

    public TbAccion buscarAccion(Object id) throws Exception {
        try {
            return gestionFacadeRemote.buscarAccion( id );
        } catch (Exception ex) {
            Utiles_MensajesDialogo.mensajeError("Error buscarAccion : " + ex.getMessage());
            Logger.getLogger(GestionDelegate.class.getName()).log(Level.SEVERE, null, ex);
            throw ex;
        }
    }

    //Para generar Reportes
    public JasperPrint generarReporte( String reporte, Map parametros ) throws SQLException, JRException{
        JasperPrint jp = null;
        try {
            jp = gestionFacadeRemote.generarReporte(reporte, parametros);
        } catch (SQLException ex) {
            Logger.getLogger(GestionDelegate.class.getName()).log(Level.SEVERE, null, ex);
            throw ex;
        } catch (JRException ex) {
            Logger.getLogger(GestionDelegate.class.getName()).log(Level.SEVERE, null, ex);
            throw ex;
        }
        return jp;
    }

    //Integracion de Programa de cortes

     public void integraProgramaCorte( String fileName ){
         gestionFacadeRemote.integraProgramaCorte(fileName);
    }

    public void registraProgramaCorte( String sector, String urba ){
        gestionFacadeRemote.registraProgramaCorte(sector, urba);
    }

    public void procesarProgramasCorte( List<TableBeanBinding_DatosArchivoProgramaCorte> archProg ){
        gestionFacadeRemote.procesarProgramasCorte(archProg);
    }

    public List<TableBeanBinding_DatosArchivoProgramaCorte> getListaArchivosProcesados(){
        return gestionFacadeRemote.getListaArchivosProcesados();
    }

    public List<TableBeanBinding_DatosArchivoProgramaCorte> getListaArchivosPendientes(){

        return gestionFacadeRemote.getListaArchivosPendientes();
    }

    //Mantenimiento de Parametros
     public int getContadorArchivoSICI(){
        return gestionFacadeRemote.getContadorArchivoSICI();
    }

    private String _host;
    private String _port;
    private InitialContext _ic;

    public static GestionDelegate gestionDelegate;
    private GestionFacadeRemote gestionFacadeRemote;

}
